
// MIT License
// 
// Copyright (c) 2009-2017 Luca Piccioni
// 
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// 
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// 
// This file is automatically generated

#pragma warning disable 649, 1572, 1573

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Security;
using System.Text;

namespace OpenWF
{
	public partial class Wfc
	{
		public const int OPENWFC_VERSION_1_0 = (1);

		public const int NONE = (0);

		public const int INVALID_HANDLE = 0;

		public const int DEFAULT_DEVICE_ID = (0);

		public const int ERROR_NONE = 0;

		public const int ERROR_OUT_OF_MEMORY = 0x7001;

		public const int ERROR_ILLEGAL_ARGUMENT = 0x7002;

		public const int ERROR_UNSUPPORTED = 0x7003;

		public const int ERROR_BAD_ATTRIBUTE = 0x7004;

		public const int ERROR_IN_USE = 0x7005;

		public const int ERROR_BUSY = 0x7006;

		public const int ERROR_BAD_DEVICE = 0x7007;

		public const int ERROR_BAD_HANDLE = 0x7008;

		public const int ERROR_INCONSISTENCY = 0x7009;

		public const int ERROR_FORCE_32BIT = 0x7FFFFFFF;

		public const int DEVICE_FILTER_SCREEN_NUMBER = 0x7020;

		public const int DEVICE_FILTER_FORCE_32BIT = 0x7FFFFFFF;

		public const int DEVICE_CLASS = 0x7030;

		public const int DEVICE_ID = 0x7031;

		public const int DEVICE_FORCE_32BIT = 0x7FFFFFFF;

		public const int DEVICE_CLASS_FULLY_CAPABLE = 0x7040;

		public const int DEVICE_CLASS_OFF_SCREEN_ONLY = 0x7041;

		public const int DEVICE_CLASS_FORCE_32BIT = 0x7FFFFFFF;

		public const int CONTEXT_TYPE = 0x7051;

		public const int CONTEXT_TARGET_HEIGHT = 0x7052;

		public const int CONTEXT_TARGET_WIDTH = 0x7053;

		public const int CONTEXT_LOWEST_ELEMENT = 0x7054;

		public const int CONTEXT_ROTATION = 0x7061;

		public const int CONTEXT_BG_COLOR = 0x7062;

		public const int CONTEXT_FORCE_32BIT = 0x7FFFFFFF;

		public const int CONTEXT_TYPE_ON_SCREEN = 0x7071;

		public const int CONTEXT_TYPE_OFF_SCREEN = 0x7072;

		public const int CONTEXT_TYPE_FORCE_32BIT = 0x7FFFFFFF;

		public const int ROTATION_0 = 0x7081;

		public const int ROTATION_90 = 0x7082;

		public const int ROTATION_180 = 0x7083;

		public const int ROTATION_270 = 0x7084;

		public const int ROTATION_FORCE_32BIT = 0x7FFFFFFF;

		public const int ELEMENT_DESTINATION_RECTANGLE = 0x7101;

		public const int ELEMENT_SOURCE = 0x7102;

		public const int ELEMENT_SOURCE_RECTANGLE = 0x7103;

		public const int ELEMENT_SOURCE_FLIP = 0x7104;

		public const int ELEMENT_SOURCE_ROTATION = 0x7105;

		public const int ELEMENT_SOURCE_SCALE_FILTER = 0x7106;

		public const int ELEMENT_TRANSPARENCY_TYPES = 0x7107;

		public const int ELEMENT_GLOBAL_ALPHA = 0x7108;

		public const int ELEMENT_MASK = 0x7109;

		public const int ELEMENT_FORCE_32BIT = 0x7FFFFFFF;

		public const int SCALE_FILTER_NONE = 0x7151;

		public const int SCALE_FILTER_FASTER = 0x7152;

		public const int SCALE_FILTER_BETTER = 0x7153;

		public const int SCALE_FILTER_FORCE_32BIT = 0x7FFFFFFF;

		public const int TRANSPARENCY_NONE = 0;

		public const int TRANSPARENCY_ELEMENT_GLOBAL_ALPHA = (1 << 0);

		public const int TRANSPARENCY_SOURCE = (1 << 1);

		public const int TRANSPARENCY_MASK = (1 << 2);

		public const int TRANSPARENCY_FORCE_32BIT = 0x7FFFFFFF;

		public const int VENDOR = 0x7200;

		public const int RENDERER = 0x7201;

		public const int VERSION = 0x7202;

		public const int EXTENSIONS = 0x7203;

		public const int STRINGID_FORCE_32BIT = 0x7FFFFFFF;

		public static int EnumerateDevices(int[] deviceIds, int deviceIdsCount, int[] filterList)
		{
			int retValue;

			unsafe {
				fixed (int* p_deviceIds = deviceIds)
				fixed (int* p_filterList = filterList)
				{
					Debug.Assert(Delegates.pwfcEnumerateDevices != null, "pwfcEnumerateDevices not implemented");
					retValue = Delegates.pwfcEnumerateDevices(p_deviceIds, deviceIdsCount, p_filterList);
					LogCommand("wfcEnumerateDevices", retValue, deviceIds, deviceIdsCount, filterList					);
				}
			}
			DebugCheckErrors(retValue);

			return (retValue);
		}

		public static UInt32 CreateDevice(int deviceId, int[] attribList)
		{
			UInt32 retValue;

			unsafe {
				fixed (int* p_attribList = attribList)
				{
					Debug.Assert(Delegates.pwfcCreateDevice != null, "pwfcCreateDevice not implemented");
					retValue = Delegates.pwfcCreateDevice(deviceId, p_attribList);
					LogCommand("wfcCreateDevice", retValue, deviceId, attribList					);
				}
			}
			DebugCheckErrors(retValue);

			return (retValue);
		}

		public static WFCErrorCode GetError(UInt32 dev)
		{
			WFCErrorCode retValue;

			Debug.Assert(Delegates.pwfcGetError != null, "pwfcGetError not implemented");
			retValue = Delegates.pwfcGetError(dev);
			LogCommand("wfcGetError", retValue, dev			);
			DebugCheckErrors(retValue);

			return (retValue);
		}

		public static int GetDeviceAttribi(UInt32 dev, WFCDeviceAttrib attrib)
		{
			int retValue;

			Debug.Assert(Delegates.pwfcGetDeviceAttribi != null, "pwfcGetDeviceAttribi not implemented");
			retValue = Delegates.pwfcGetDeviceAttribi(dev, attrib);
			LogCommand("wfcGetDeviceAttribi", retValue, dev, attrib			);
			DebugCheckErrors(retValue);

			return (retValue);
		}

		public static WFCErrorCode DestroyDevice(UInt32 dev)
		{
			WFCErrorCode retValue;

			Debug.Assert(Delegates.pwfcDestroyDevice != null, "pwfcDestroyDevice not implemented");
			retValue = Delegates.pwfcDestroyDevice(dev);
			LogCommand("wfcDestroyDevice", retValue, dev			);
			DebugCheckErrors(retValue);

			return (retValue);
		}

		public static UInt32 Create(UInt32 dev, int screenNumber, int[] attribList)
		{
			UInt32 retValue;

			unsafe {
				fixed (int* p_attribList = attribList)
				{
					Debug.Assert(Delegates.pwfcCreateOnScreenContext != null, "pwfcCreateOnScreenContext not implemented");
					retValue = Delegates.pwfcCreateOnScreenContext(dev, screenNumber, p_attribList);
					LogCommand("wfcCreateOnScreenContext", retValue, dev, screenNumber, attribList					);
				}
			}
			DebugCheckErrors(retValue);

			return (retValue);
		}

		public static UInt32 Create(UInt32 dev, UInt32 stream, int[] attribList)
		{
			UInt32 retValue;

			unsafe {
				fixed (int* p_attribList = attribList)
				{
					Debug.Assert(Delegates.pwfcCreateOffScreenContext != null, "pwfcCreateOffScreenContext not implemented");
					retValue = Delegates.pwfcCreateOffScreenContext(dev, stream, p_attribList);
					LogCommand("wfcCreateOffScreenContext", retValue, dev, stream, attribList					);
				}
			}
			DebugCheckErrors(retValue);

			return (retValue);
		}

		public static void Commit(UInt32 dev, UInt32 ctx, bool wait)
		{
			Debug.Assert(Delegates.pwfcCommit != null, "pwfcCommit not implemented");
			Delegates.pwfcCommit(dev, ctx, wait);
			LogCommand("wfcCommit", null, dev, ctx, wait			);
			DebugCheckErrors(null);
		}

		public static int GetContextAttribi(UInt32 dev, UInt32 ctx, WFCContextAttrib attrib)
		{
			int retValue;

			Debug.Assert(Delegates.pwfcGetContextAttribi != null, "pwfcGetContextAttribi not implemented");
			retValue = Delegates.pwfcGetContextAttribi(dev, ctx, attrib);
			LogCommand("wfcGetContextAttribi", retValue, dev, ctx, attrib			);
			DebugCheckErrors(retValue);

			return (retValue);
		}

		public static void GetContextAttribfv(UInt32 dev, UInt32 ctx, WFCContextAttrib attrib, int count, [Out] float[] values)
		{
			unsafe {
				fixed (float* p_values = values)
				{
					Debug.Assert(Delegates.pwfcGetContextAttribfv != null, "pwfcGetContextAttribfv not implemented");
					Delegates.pwfcGetContextAttribfv(dev, ctx, attrib, count, p_values);
					LogCommand("wfcGetContextAttribfv", null, dev, ctx, attrib, count, values					);
				}
			}
			DebugCheckErrors(null);
		}

		public static void SetContextAttribi(UInt32 dev, UInt32 ctx, WFCContextAttrib attrib, int value)
		{
			Debug.Assert(Delegates.pwfcSetContextAttribi != null, "pwfcSetContextAttribi not implemented");
			Delegates.pwfcSetContextAttribi(dev, ctx, attrib, value);
			LogCommand("wfcSetContextAttribi", null, dev, ctx, attrib, value			);
			DebugCheckErrors(null);
		}

		public static void SetContextAttribfv(UInt32 dev, UInt32 ctx, WFCContextAttrib attrib, int count, float[] values)
		{
			unsafe {
				fixed (float* p_values = values)
				{
					Debug.Assert(Delegates.pwfcSetContextAttribfv != null, "pwfcSetContextAttribfv not implemented");
					Delegates.pwfcSetContextAttribfv(dev, ctx, attrib, count, p_values);
					LogCommand("wfcSetContextAttribfv", null, dev, ctx, attrib, count, values					);
				}
			}
			DebugCheckErrors(null);
		}

		public static void Destroy(UInt32 dev, UInt32 ctx)
		{
			Debug.Assert(Delegates.pwfcDestroyContext != null, "pwfcDestroyContext not implemented");
			Delegates.pwfcDestroyContext(dev, ctx);
			LogCommand("wfcDestroyContext", null, dev, ctx			);
			DebugCheckErrors(null);
		}

		public static UInt32 CreateSourceFromStream(UInt32 dev, UInt32 ctx, UInt32 stream, int[] attribList)
		{
			UInt32 retValue;

			unsafe {
				fixed (int* p_attribList = attribList)
				{
					Debug.Assert(Delegates.pwfcCreateSourceFromStream != null, "pwfcCreateSourceFromStream not implemented");
					retValue = Delegates.pwfcCreateSourceFromStream(dev, ctx, stream, p_attribList);
					LogCommand("wfcCreateSourceFromStream", retValue, dev, ctx, stream, attribList					);
				}
			}
			DebugCheckErrors(retValue);

			return (retValue);
		}

		public static void DestroySource(UInt32 dev, UInt32 src)
		{
			Debug.Assert(Delegates.pwfcDestroySource != null, "pwfcDestroySource not implemented");
			Delegates.pwfcDestroySource(dev, src);
			LogCommand("wfcDestroySource", null, dev, src			);
			DebugCheckErrors(null);
		}

		public static UInt32 CreateMaskFromStream(UInt32 dev, UInt32 ctx, UInt32 stream, int[] attribList)
		{
			UInt32 retValue;

			unsafe {
				fixed (int* p_attribList = attribList)
				{
					Debug.Assert(Delegates.pwfcCreateMaskFromStream != null, "pwfcCreateMaskFromStream not implemented");
					retValue = Delegates.pwfcCreateMaskFromStream(dev, ctx, stream, p_attribList);
					LogCommand("wfcCreateMaskFromStream", retValue, dev, ctx, stream, attribList					);
				}
			}
			DebugCheckErrors(retValue);

			return (retValue);
		}

		public static void DestroyMask(UInt32 dev, UInt32 mask)
		{
			Debug.Assert(Delegates.pwfcDestroyMask != null, "pwfcDestroyMask not implemented");
			Delegates.pwfcDestroyMask(dev, mask);
			LogCommand("wfcDestroyMask", null, dev, mask			);
			DebugCheckErrors(null);
		}

		public static UInt32 CreateElement(UInt32 dev, UInt32 ctx, int[] attribList)
		{
			UInt32 retValue;

			unsafe {
				fixed (int* p_attribList = attribList)
				{
					Debug.Assert(Delegates.pwfcCreateElement != null, "pwfcCreateElement not implemented");
					retValue = Delegates.pwfcCreateElement(dev, ctx, p_attribList);
					LogCommand("wfcCreateElement", retValue, dev, ctx, attribList					);
				}
			}
			DebugCheckErrors(retValue);

			return (retValue);
		}

		public static int GetElementAttribi(UInt32 dev, UInt32 element, WFCElementAttrib attrib)
		{
			int retValue;

			Debug.Assert(Delegates.pwfcGetElementAttribi != null, "pwfcGetElementAttribi not implemented");
			retValue = Delegates.pwfcGetElementAttribi(dev, element, attrib);
			LogCommand("wfcGetElementAttribi", retValue, dev, element, attrib			);
			DebugCheckErrors(retValue);

			return (retValue);
		}

		public static float GetElementAttribf(UInt32 dev, UInt32 element, WFCElementAttrib attrib)
		{
			float retValue;

			Debug.Assert(Delegates.pwfcGetElementAttribf != null, "pwfcGetElementAttribf not implemented");
			retValue = Delegates.pwfcGetElementAttribf(dev, element, attrib);
			LogCommand("wfcGetElementAttribf", retValue, dev, element, attrib			);
			DebugCheckErrors(retValue);

			return (retValue);
		}

		public static void GetElementAttribi(UInt32 dev, UInt32 element, WFCElementAttrib attrib, int count, [Out] int[] values)
		{
			unsafe {
				fixed (int* p_values = values)
				{
					Debug.Assert(Delegates.pwfcGetElementAttribiv != null, "pwfcGetElementAttribiv not implemented");
					Delegates.pwfcGetElementAttribiv(dev, element, attrib, count, p_values);
					LogCommand("wfcGetElementAttribiv", null, dev, element, attrib, count, values					);
				}
			}
			DebugCheckErrors(null);
		}

		public static void GetElementAttribf(UInt32 dev, UInt32 element, WFCElementAttrib attrib, int count, [Out] float[] values)
		{
			unsafe {
				fixed (float* p_values = values)
				{
					Debug.Assert(Delegates.pwfcGetElementAttribfv != null, "pwfcGetElementAttribfv not implemented");
					Delegates.pwfcGetElementAttribfv(dev, element, attrib, count, p_values);
					LogCommand("wfcGetElementAttribfv", null, dev, element, attrib, count, values					);
				}
			}
			DebugCheckErrors(null);
		}

		public static void SetElementAttribi(UInt32 dev, UInt32 element, WFCElementAttrib attrib, int value)
		{
			Debug.Assert(Delegates.pwfcSetElementAttribi != null, "pwfcSetElementAttribi not implemented");
			Delegates.pwfcSetElementAttribi(dev, element, attrib, value);
			LogCommand("wfcSetElementAttribi", null, dev, element, attrib, value			);
			DebugCheckErrors(null);
		}

		public static void SetElementAttribf(UInt32 dev, UInt32 element, WFCElementAttrib attrib, float value)
		{
			Debug.Assert(Delegates.pwfcSetElementAttribf != null, "pwfcSetElementAttribf not implemented");
			Delegates.pwfcSetElementAttribf(dev, element, attrib, value);
			LogCommand("wfcSetElementAttribf", null, dev, element, attrib, value			);
			DebugCheckErrors(null);
		}

		public static void SetElementAttribi(UInt32 dev, UInt32 element, WFCElementAttrib attrib, int count, int[] values)
		{
			unsafe {
				fixed (int* p_values = values)
				{
					Debug.Assert(Delegates.pwfcSetElementAttribiv != null, "pwfcSetElementAttribiv not implemented");
					Delegates.pwfcSetElementAttribiv(dev, element, attrib, count, p_values);
					LogCommand("wfcSetElementAttribiv", null, dev, element, attrib, count, values					);
				}
			}
			DebugCheckErrors(null);
		}

		public static void SetElementAttribf(UInt32 dev, UInt32 element, WFCElementAttrib attrib, int count, float[] values)
		{
			unsafe {
				fixed (float* p_values = values)
				{
					Debug.Assert(Delegates.pwfcSetElementAttribfv != null, "pwfcSetElementAttribfv not implemented");
					Delegates.pwfcSetElementAttribfv(dev, element, attrib, count, p_values);
					LogCommand("wfcSetElementAttribfv", null, dev, element, attrib, count, values					);
				}
			}
			DebugCheckErrors(null);
		}

		public static void InsertElement(UInt32 dev, UInt32 element, UInt32 subordinate)
		{
			Debug.Assert(Delegates.pwfcInsertElement != null, "pwfcInsertElement not implemented");
			Delegates.pwfcInsertElement(dev, element, subordinate);
			LogCommand("wfcInsertElement", null, dev, element, subordinate			);
			DebugCheckErrors(null);
		}

		public static void RemoveElement(UInt32 dev, UInt32 element)
		{
			Debug.Assert(Delegates.pwfcRemoveElement != null, "pwfcRemoveElement not implemented");
			Delegates.pwfcRemoveElement(dev, element);
			LogCommand("wfcRemoveElement", null, dev, element			);
			DebugCheckErrors(null);
		}

		public static UInt32 GetElementAbove(UInt32 dev, UInt32 element)
		{
			UInt32 retValue;

			Debug.Assert(Delegates.pwfcGetElementAbove != null, "pwfcGetElementAbove not implemented");
			retValue = Delegates.pwfcGetElementAbove(dev, element);
			LogCommand("wfcGetElementAbove", retValue, dev, element			);
			DebugCheckErrors(retValue);

			return (retValue);
		}

		public static UInt32 GetElementBelow(UInt32 dev, UInt32 element)
		{
			UInt32 retValue;

			Debug.Assert(Delegates.pwfcGetElementBelow != null, "pwfcGetElementBelow not implemented");
			retValue = Delegates.pwfcGetElementBelow(dev, element);
			LogCommand("wfcGetElementBelow", retValue, dev, element			);
			DebugCheckErrors(retValue);

			return (retValue);
		}

		public static void DestroyElement(UInt32 dev, UInt32 element)
		{
			Debug.Assert(Delegates.pwfcDestroyElement != null, "pwfcDestroyElement not implemented");
			Delegates.pwfcDestroyElement(dev, element);
			LogCommand("wfcDestroyElement", null, dev, element			);
			DebugCheckErrors(null);
		}

		public static void Activate(UInt32 dev, UInt32 ctx)
		{
			Debug.Assert(Delegates.pwfcActivate != null, "pwfcActivate not implemented");
			Delegates.pwfcActivate(dev, ctx);
			LogCommand("wfcActivate", null, dev, ctx			);
			DebugCheckErrors(null);
		}

		public static void Deactivate(UInt32 dev, UInt32 ctx)
		{
			Debug.Assert(Delegates.pwfcDeactivate != null, "pwfcDeactivate not implemented");
			Delegates.pwfcDeactivate(dev, ctx);
			LogCommand("wfcDeactivate", null, dev, ctx			);
			DebugCheckErrors(null);
		}

		public static void Compose(UInt32 dev, UInt32 ctx, bool wait)
		{
			Debug.Assert(Delegates.pwfcCompose != null, "pwfcCompose not implemented");
			Delegates.pwfcCompose(dev, ctx, wait);
			LogCommand("wfcCompose", null, dev, ctx, wait			);
			DebugCheckErrors(null);
		}

		public static void Fence(UInt32 dev, UInt32 ctx, IntPtr dpy, IntPtr sync)
		{
			Debug.Assert(Delegates.pwfcFence != null, "pwfcFence not implemented");
			Delegates.pwfcFence(dev, ctx, dpy, sync);
			LogCommand("wfcFence", null, dev, ctx, dpy, sync			);
			DebugCheckErrors(null);
		}

		public static int GetStrings(UInt32 dev, WFCStringID name, [Out] IntPtr[] strings, int stringsCount)
		{
			int retValue;

			unsafe {
				fixed (IntPtr* p_strings = strings)
				{
					Debug.Assert(Delegates.pwfcGetStrings != null, "pwfcGetStrings not implemented");
					retValue = Delegates.pwfcGetStrings(dev, name, p_strings, stringsCount);
					LogCommand("wfcGetStrings", retValue, dev, name, strings, stringsCount					);
				}
			}
			DebugCheckErrors(retValue);

			return (retValue);
		}

		public static bool IsExtensionSupported(UInt32 dev, [Out] char[] @string)
		{
			bool retValue;

			unsafe {
				fixed (char* p_string = @string)
				{
					Debug.Assert(Delegates.pwfcIsExtensionSupported != null, "pwfcIsExtensionSupported not implemented");
					retValue = Delegates.pwfcIsExtensionSupported(dev, p_string);
					LogCommand("wfcIsExtensionSupported", retValue, dev, @string					);
				}
			}
			DebugCheckErrors(retValue);

			return (retValue);
		}

		internal unsafe static partial class Delegates
		{
			[SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate int wfcEnumerateDevices(int* deviceIds, int deviceIdsCount, int* filterList);

			internal static wfcEnumerateDevices pwfcEnumerateDevices;

			[SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate UInt32 wfcCreateDevice(int deviceId, int* attribList);

			internal static wfcCreateDevice pwfcCreateDevice;

			[SuppressUnmanagedCodeSecurity()]
			internal delegate WFCErrorCode wfcGetError(UInt32 dev);

			internal static wfcGetError pwfcGetError;

			[SuppressUnmanagedCodeSecurity()]
			internal delegate int wfcGetDeviceAttribi(UInt32 dev, WFCDeviceAttrib attrib);

			internal static wfcGetDeviceAttribi pwfcGetDeviceAttribi;

			[SuppressUnmanagedCodeSecurity()]
			internal delegate WFCErrorCode wfcDestroyDevice(UInt32 dev);

			internal static wfcDestroyDevice pwfcDestroyDevice;

			[SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate UInt32 wfcCreateOnScreenContext(UInt32 dev, int screenNumber, int* attribList);

			internal static wfcCreateOnScreenContext pwfcCreateOnScreenContext;

			[SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate UInt32 wfcCreateOffScreenContext(UInt32 dev, UInt32 stream, int* attribList);

			internal static wfcCreateOffScreenContext pwfcCreateOffScreenContext;

			[SuppressUnmanagedCodeSecurity()]
			internal delegate void wfcCommit(UInt32 dev, UInt32 ctx, bool wait);

			internal static wfcCommit pwfcCommit;

			[SuppressUnmanagedCodeSecurity()]
			internal delegate int wfcGetContextAttribi(UInt32 dev, UInt32 ctx, WFCContextAttrib attrib);

			internal static wfcGetContextAttribi pwfcGetContextAttribi;

			[SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void wfcGetContextAttribfv(UInt32 dev, UInt32 ctx, WFCContextAttrib attrib, int count, float* values);

			internal static wfcGetContextAttribfv pwfcGetContextAttribfv;

			[SuppressUnmanagedCodeSecurity()]
			internal delegate void wfcSetContextAttribi(UInt32 dev, UInt32 ctx, WFCContextAttrib attrib, int value);

			internal static wfcSetContextAttribi pwfcSetContextAttribi;

			[SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void wfcSetContextAttribfv(UInt32 dev, UInt32 ctx, WFCContextAttrib attrib, int count, float* values);

			internal static wfcSetContextAttribfv pwfcSetContextAttribfv;

			[SuppressUnmanagedCodeSecurity()]
			internal delegate void wfcDestroyContext(UInt32 dev, UInt32 ctx);

			internal static wfcDestroyContext pwfcDestroyContext;

			[SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate UInt32 wfcCreateSourceFromStream(UInt32 dev, UInt32 ctx, UInt32 stream, int* attribList);

			internal static wfcCreateSourceFromStream pwfcCreateSourceFromStream;

			[SuppressUnmanagedCodeSecurity()]
			internal delegate void wfcDestroySource(UInt32 dev, UInt32 src);

			internal static wfcDestroySource pwfcDestroySource;

			[SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate UInt32 wfcCreateMaskFromStream(UInt32 dev, UInt32 ctx, UInt32 stream, int* attribList);

			internal static wfcCreateMaskFromStream pwfcCreateMaskFromStream;

			[SuppressUnmanagedCodeSecurity()]
			internal delegate void wfcDestroyMask(UInt32 dev, UInt32 mask);

			internal static wfcDestroyMask pwfcDestroyMask;

			[SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate UInt32 wfcCreateElement(UInt32 dev, UInt32 ctx, int* attribList);

			internal static wfcCreateElement pwfcCreateElement;

			[SuppressUnmanagedCodeSecurity()]
			internal delegate int wfcGetElementAttribi(UInt32 dev, UInt32 element, WFCElementAttrib attrib);

			internal static wfcGetElementAttribi pwfcGetElementAttribi;

			[SuppressUnmanagedCodeSecurity()]
			internal delegate float wfcGetElementAttribf(UInt32 dev, UInt32 element, WFCElementAttrib attrib);

			internal static wfcGetElementAttribf pwfcGetElementAttribf;

			[SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void wfcGetElementAttribiv(UInt32 dev, UInt32 element, WFCElementAttrib attrib, int count, int* values);

			internal static wfcGetElementAttribiv pwfcGetElementAttribiv;

			[SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void wfcGetElementAttribfv(UInt32 dev, UInt32 element, WFCElementAttrib attrib, int count, float* values);

			internal static wfcGetElementAttribfv pwfcGetElementAttribfv;

			[SuppressUnmanagedCodeSecurity()]
			internal delegate void wfcSetElementAttribi(UInt32 dev, UInt32 element, WFCElementAttrib attrib, int value);

			internal static wfcSetElementAttribi pwfcSetElementAttribi;

			[SuppressUnmanagedCodeSecurity()]
			internal delegate void wfcSetElementAttribf(UInt32 dev, UInt32 element, WFCElementAttrib attrib, float value);

			internal static wfcSetElementAttribf pwfcSetElementAttribf;

			[SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void wfcSetElementAttribiv(UInt32 dev, UInt32 element, WFCElementAttrib attrib, int count, int* values);

			internal static wfcSetElementAttribiv pwfcSetElementAttribiv;

			[SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void wfcSetElementAttribfv(UInt32 dev, UInt32 element, WFCElementAttrib attrib, int count, float* values);

			internal static wfcSetElementAttribfv pwfcSetElementAttribfv;

			[SuppressUnmanagedCodeSecurity()]
			internal delegate void wfcInsertElement(UInt32 dev, UInt32 element, UInt32 subordinate);

			internal static wfcInsertElement pwfcInsertElement;

			[SuppressUnmanagedCodeSecurity()]
			internal delegate void wfcRemoveElement(UInt32 dev, UInt32 element);

			internal static wfcRemoveElement pwfcRemoveElement;

			[SuppressUnmanagedCodeSecurity()]
			internal delegate UInt32 wfcGetElementAbove(UInt32 dev, UInt32 element);

			internal static wfcGetElementAbove pwfcGetElementAbove;

			[SuppressUnmanagedCodeSecurity()]
			internal delegate UInt32 wfcGetElementBelow(UInt32 dev, UInt32 element);

			internal static wfcGetElementBelow pwfcGetElementBelow;

			[SuppressUnmanagedCodeSecurity()]
			internal delegate void wfcDestroyElement(UInt32 dev, UInt32 element);

			internal static wfcDestroyElement pwfcDestroyElement;

			[SuppressUnmanagedCodeSecurity()]
			internal delegate void wfcActivate(UInt32 dev, UInt32 ctx);

			internal static wfcActivate pwfcActivate;

			[SuppressUnmanagedCodeSecurity()]
			internal delegate void wfcDeactivate(UInt32 dev, UInt32 ctx);

			internal static wfcDeactivate pwfcDeactivate;

			[SuppressUnmanagedCodeSecurity()]
			internal delegate void wfcCompose(UInt32 dev, UInt32 ctx, bool wait);

			internal static wfcCompose pwfcCompose;

			[SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void wfcFence(UInt32 dev, UInt32 ctx, IntPtr dpy, IntPtr sync);

			internal static wfcFence pwfcFence;

			[SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate int wfcGetStrings(UInt32 dev, WFCStringID name, IntPtr* strings, int stringsCount);

			internal static wfcGetStrings pwfcGetStrings;

			[SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate bool wfcIsExtensionSupported(UInt32 dev, char* @string);

			internal static wfcIsExtensionSupported pwfcIsExtensionSupported;

		}
	}

}
